<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        class Father{

            //  类的静态成员  static
            //属性
            name;
            age = 18;

            //方法
            //构造函数 :  当实例化对象时，会自动调用构造函数
            constructor(name,age,sex){
               this.name = name;
                this.age = age;
                this.sex = sex;
            }

            //自定义方法，   向实例对象添加方法
            speak = function(){
                console.log("我是父亲，我在说话");
            }

            static demo = ()=>{
                console.log("我是父亲，我demo");
            }

            // 向 原型对象 添加方法
            run(){
                console.log("我是一个方法");
            }

           
        }

        //实例化
        let f = new Father("张三",18,"男");
        console.log(f);

        console.dir(Father);

        // f.run();

        //子类
        class Son extends Father{

            //向子类添加属性
            //身高
            height;

            //构造函数
            constructor(name,age,sex,height){
                super(name,age,sex);  // 调用父类的构造函数
                this.height = height;
            }

            //子类 方法   原型对象
            playGame(){
                console.log("儿子玩游戏");
            }

            //  重写父类方法   原型对象
            speak = function() {
                console.log(`我是${this.name}，我也在说话`);
            }
        }

        //实例化对象
        let s = new Son("张小小三",15,"男",150);
        console.log(s);
        s.speak();
        
        let s1 = new Son("李四",15,"男",150);
        console.log(s1);
        s1.speak();





    </script>
</body>
</html>